<template>
  <div class="todo-header">
    <input
        type="text"
        placeholder="请输入你的任务名称，按回车键确认"
        v-model="newVal" @keyup.enter="imAddTodo"
    />
  </div>
</template>

<script lang="ts">
import {defineComponent} from 'vue';

export default defineComponent({
  name: "Header"
})
</script>

<script lang="ts" setup>
import {defineProps, ref, useAttrs} from "vue";
import {TodoType} from "../modules/TodoList";
import {nanoid} from "nanoid";

// 1. 接收App传递的addTodo方法
interface propsType {
  addTodo(newTodo: TodoType): void
}

const props = defineProps<propsType>()
const {addTodo} = props

// 2. 设置双绑数据的初始值
const newVal = ref("")

// 3. 封装添加事件，并调用addTodo
const imAddTodo = () => {
  // 输入内容不能为空
  if (!newVal.value.trim()) return alert('请输入内容')
  // 完善参数
  const newValObj = {id: nanoid(), thing: newVal.value, done: false}
  addTodo(newValObj)
  // 清空input内容
  newVal.value = ""
}
</script>

<style lang="scss" scoped>
/*header*/
.todo-header input {
  width: 560px;
  height: 28px;
  font-size: 14px;
  border: 1px solid #ccc;
  border-radius: 4px;
  padding: 4px 7px;
}

.todo-header input:focus {
  outline: none;
  border-color: rgba(82, 168, 236, 0.8);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
  0 0 8px rgba(82, 168, 236, 0.6);
}
</style>